在前面中我們有介紹到 開放封閉原則(OCP)。
開放封閉原則可以說是物件導向分析(OOA)的核心概念,
而里氏替換原則(LSP)則是實踐物件導向設計的方法之一。
If S is a subtype of T, then objects of type T may be replaced with objects of type S,
without breaking the program.
這段話簡單來說就是父型別(Type)出現的地方,都可以用子型別替代,
且不會影響程式的運作。
里氏替換原則 在定義上其實有很多物件導向對於繼承/實作(extend/implement)上的規範。
這邊統整成三個規範:
繼承/實作(extend/implement)的使用對於我們程式開發帶來了許多的便利性,
但同時也帶了不少的弊端,例如類別間的耦合性就會增加,當你對於父類別作修改時,
同時也會影響到子類別。
這時透過遵循里氏替換原則,我們更能確保父類別的必要性與子類別的擴展性。
進而有更穩固的程式結構。
很多人在學習里氏替換原則常常會被自己所使用的語言侷限(例如 C#、JAVA....),
而會認為在繼承/實作(extend/implement)在override的時候就是只能與父類別輸入/輸出完全一致。
其實在一些語言中是支援不同數量的輸入/輸出。
在里氏替換原則在實際開發中,其實就是兩點